package summer.window;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;


class Solution219 {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        if (nums.length < 2) return false;
        Map<Integer, Integer> map = new HashMap<>();
        k = Math.min(k, nums.length - 1);
        for (int i = 0; i <= k; i++) {
            int cur = map.getOrDefault(nums[i], 0);
            if (cur + 1 >= 2) return true;
            map.put(nums[i], cur + 1);
        }
        for (int i = k + 1, j = 0; i < nums.length; i++, j++) {
            map.put(nums[j], map.get(nums[j]) - 1);
            int cur = map.getOrDefault(nums[i], 0);
            if (cur + 1 >= 2) return true;
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }
        return false;
    }
}
